package com.iaz.tech.tools.common.utils;

/**
 * 寻遍，用于双向列表进行迭代
 * @param <T>
 */
public interface IChainListIteratorAble<T> {
	/**
	 * 下一个, 能进行深度索引
	 * @return
	 */
	IChainNodeAble<T> nextIndexNode();
	
	/**
	 * 已经到尾部了
	 * @return
	 */
	boolean isInnerTail();
	/**
	 * 删除_cursor 所在的链表
	 * @param _cursor
	 */
	void clearToLast(IChainNodeAble<T> _cursor);
	/**
	 * 跳转到_cursor 所在链条的头
	 * @param _cursor
	 * @return
	 */
	IChainNodeAble<T> firstForCursor(IChainNodeAble<T> _cursor);
	/**
	 * 跳转到_cursor 所在链条的尾部
	 * @param _cursor
	 * @return
	 */
	IChainNodeAble<T> tailForCursor(IChainNodeAble<T> _cursor);
	/**
	 * 定位_cursor所在的链条的位置
	 * @param _cursor
	 * @return
	 */
	IChainNodeAble<T> positionForCursor(IChainNodeAble<T> _cursor, int position);
	
}
